package greedy.prevClass.exer01;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 夏天到了，又到了用水高峰期，偏巧小区的水管出了点问题，消防车赶紧给小区送了一车水过来。小区居民们纷纷拿出自家装水的容器，
 * 有的是个大塑料瓶，有的是茶水壶，有的是小塑料桶，哈哈，什么样的都有:)。
 * 现在有n个人在一个水龙头前排队接水，假设每个人接水的时间分别为Ti，请编程找出这n个人排队的一种顺序，使得这n个人的平均等待时间最小。
 * 每组测试数据共两行，第一行为一个整数n，表示有n个人；
 * 第二行分别表示第1个人到第n个人每人的接水时间T1，T2,…Tn。
 */
public class Main {
    public static void main(String[] args) {
        // 贪心算法
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] arr = new int[n][2];
        for (int i = 0; i < n; i++) {
            arr[i][0] = i + 1; // 编号
            arr[i][1] = sc.nextInt();
        }
        Arrays.sort(arr, (e1, e2) -> e1[1] - e2[1]);
        // 打印排队顺序
        for (int i = 0; i < n - 1; i++) {
            System.out.print(arr[i][0] + " ");
        }
        System.out.println(arr[n - 1][0]);
        double minTime = 0; // 等待时间
        for (int i = 0; i < n; i++) {
            minTime += ((n - i - 1) * arr[i][1]);
        }
        System.out.printf("%.2f\n", minTime / n);
    }
}
